package cn.byapps.core.dao;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

public interface BaseDao<E> {

	/**
	 * 查询所有记录
	 * 
	 * @return 所有记录
	 */
	List<E> findAll();

	List<E> findAll(Map<String, Object> searchParams);

	/**
	 * 保存记录
	 * 
	 * @param entity
	 */
	void add(E entity);

	/**
	 * 通过ID查询记录
	 * 
	 * @param id
	 * @return
	 */
	E get(Serializable id);

	E load(Serializable id);

	/**
	 * 更新记录
	 * 
	 * @param entity
	 */
	void update(E entity);

	/**
	 * 通过ID删除记录
	 * 
	 * @param pid
	 */
	void delete(E entity);

	/**
	 * 分页查询
	 * 
	 * @param curPage
	 *            当下标 （从0开孡的正数）
	 * @param pageCount
	 *            行数（从1开始的正数）
	 * @return
	 */
	List<E> find(int pos, int rows);

	List<E> find(int pos, int rows, Map<String, Object> searchParams);

	/**
	 * 统计记录数
	 * 
	 * @return
	 */
	long count();

	long count(Map<String, Object> searchParams);
}
